.TH "pure-quotacheck" "8" "@VERSION@" "Frank Denis" "Pure-FTPd"
.SH "NAME"
.LP
pure\-quotacheck \- Update virtual quota files for Pure\-FTPd
.SH "SYNTAX"
.LP
pure\-quotacheck \fI\-u username/gid\fP \fI\-d home directory\fP [\fI\-g group/gid\fP]
.SH "DESCRIPTION"
.LP
pure\-quotacheck create a \fB.ftpquota\fR file in the specified directory.
.br
This file contains the current file and size of the directory, and it is used by Pure\-FTPd when virtual quotas are enabled.
.br
It's recommended to periodically run pure\-quotacheck for every user, in crontabs.
.SH "OPTIONS"
.TP
\fB\-d\fR <\fIdirectory\fP>
Scans the specified <\fIdirectory\fP>.
.TP
\fB\-g\fR <\fIgroup or gid\fP>
Sets the group files will be scanned as. This is optional: if a user name is passed to \fB\-u</fR>, group are automatically retrieved.
.TP
\fB\-u\fR <\fIuser or uid\fP>
Set the user name files will be scanned as. This is mandatory, and it can't be "root".
.TP
\fB\-h\fR
Output usage information and exit.
.SH "FILES"
.LP
\fI.ftpquota\fP
.SH "EXAMPLES"
.LP
To run this program the standard way type:
.LP
pure\-quotacheck \-u john \-d /home/john
.SH "AUTHORS"
.LP
Frank DENIS <j at pureftpd dot org>
.SH "SECURITY"
pure\-quotacheck switches real and effective uids/gids as soon as possible. Root privileges are never given back.
.br
pure\-quotacheck refuses to scan directories with uid = 0 (root) or gid = 0 (wheel/root) .
.br
pure\-quotacheck performs a chroot() call to the home directory. It never traverses parent directories.
.br
pure\-quotacheck only scans real files (no socket, no pipe, etc) .
.br
pure\-quotacheck enforces read access on directories to prevent against people doing chmod 0 before a quota scan.
.br
pure\-quotacheck enforces write access on the home directory to properly write the .ftpquota file.
.br
pure\-quotacheck never scans the same inode/device pair twice.

.SH "SEE ALSO"
.BR "ftp(1)" ,
.BR "pure-ftpd(8)"
.BR "pure-ftpwho(8)"
.BR "pure-mrtginfo(8)"
.BR "pure-uploadscript(8)"
.BR "pure-statsdecode(8)"
.BR "pure-pw(8)"
.BR "pure-quotacheck(8)"
.BR "pure-authd(8)"
.BR "pure-certd(8)"

.BR "RFC 959",
.BR "RFC 2228",
.BR "RFC 2389" " and"
.BR "RFC 2428" .
